﻿/**	sola_dancer.h
 *	----	Create Time Stamp	--2008-12-19 01:10:49--
 *------------------------------------------------------------------------------
 *	Mean	:
 *	Author	:Nick Shallery	(nicknide@gmail.com)
 *	Version	:1.0.1.1	(2008-12-19 01:10:50)
 *------------------------------------------------------------------------------
**/	/*YOU HAVE ALL LEFT WITH THIS CODE WHILE YOU KEEP COMMENT IN EVERY COPY.*/


#if			!defined(__LXUT__MOD__SOLA_DANCER__NICK__K_IN_G__)
#define		__LXUT__MOD__SOLA_DANCER__NICK__K_IN_G__
//==============================================================================
//--------------------------------------------------------------------------

#if			!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)
	#include	"../../lolix/lolix_type.h"
#endif	//	!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)

#if			!defined(__LOLIX__SOLA__VECTOR__NICK__K_IN_G__)
	#include	"../../lolix/sola/vector.h"
#endif	//	!defined(__LOLIX__SOLA__VECTOR__NICK__K_IN_G__)

#if			!defined(__LOLIX__SOLA__MATRIX__K_IN_G__)
	#include	"../../lolix/sola/matrix.h"
#endif	//	!defined(__LOLIX__SOLA__MATRIX__K_IN_G__)

#if			!defined(__LOLIX__TOY__TIME_TYPES__K_IN_G__)
	#include	"../../lolix/toy/time_types.h"
#endif	//	!defined(__LOLIX__TOY__TIME_TYPES__K_IN_G__)


#if			!defined(__LXUT__RSRC__RSRC_POND__NICK__K_IN_G__)
	#include	"../rsrc/rsrc_pond.h"
#endif	//	!defined(__LXUT__RSRC__RSRC_POND__NICK__K_IN_G__)


namespace lxut{namespace mod{
	class	sola_spirit;
}}


class LOLIX_NO_VTABLE	lxut::mod::sola_spirit
	: public lolix::itf
{
public:
	LOLIX_DECLARE_ITF(lxut::mod::sola_spirit, lolix::itf, (0x6880d0c9, 0x02a74173, 0x8ae5bfd1, 0x67831607));
	class	rsrc_fetch_type;
	typedef	lolix::sola::vec3	vec3;
	typedef	lolix::sola::vec4	vec4;
	typedef	lolix::sola::mat4	mat4;
	typedef	lolix::toy::time_span	time_span;

	enum	ENUM_FIXED_TYPE;	//	混合类型

	//LOLIX_INTERFACE(get_pos	, LOLIX_RETNV	, (vec3* out_ptr)const);
	//LOLIX_INTERFACE(set_pos	, LOLIX_RETNV	, (vec3 const* in_ptr));
	//LOLIX_INTERFACE(get_rot	, LOLIX_RETNV	, (vec4* out_ptr)const);
	//LOLIX_INTERFACE(set_rot	, LOLIX_RETNV	, (vec4 const* in_ptr));
	//LOLIX_INTERFACE(get_scan, LOLIX_RETNV	, (vec3* out_ptr)const);
	//LOLIX_INTERFACE(set_scan, LOLIX_RETNV	, (vec3 const* in_ptr));

	LOLIX_INTERFACE(get_mat	, const mat4*	, (bool right_handle)const);
	LOLIX_INTERFACE(set_mat	, void			, (mat4 const*, bool right_handle));

	//LOLIX_INTERFACE(key_size, size_type		, (void)const);
	//LOLIX_INTERFACE(add_key	, LOLIX_RETNV	, (lolix::toy::time_span, ENUM_FIXED_TYPE));
	//LOLIX_INTERFACE(at_key	, LOLIX_RETNV	, (time_span* out_ptr, ENUM_FIXED_TYPE* out_ftype, size_type keyCnt)const);
	//LOLIX_INTERFACE(low_key	, LOLIX_RETNV	, (time_span* io_ptr, ENUM_FIXED_TYPE* out_ftype)const);
	//LOLIX_INTERFACE(high_key, LOLIX_RETNV	, (time_span* io_ptr, ENUM_FIXED_TYPE* out_ftype)const);
};


class LOLIX_NO_VTABLE lxut::mod::sola_spirit::rsrc_fetch_type
	: public lxut::rsrc::rsrc_pond::rsrc_fetch
{
public:
	LOLIX_DECLARE_ITF(lxut::mod::sola_spirit::rsrc_fetch_type, lxut::rsrc::rsrc_pond::rsrc_fetch, (0x94de126a, 0xea904c99, 0x88c21e76, 0x2d4ad43e));
};


enum	lxut::mod::sola_spirit::ENUM_FIXED_TYPE
{	FIXED_TYPE_NEAREST
,	FIXED_TYPE_LINE
//,	FIXED_TYPE_P2	//	二次插值
//,	FIXED_TYPE_P3	//	三次插值 : 如果没有四个点的话， 则直接蜕化为二次插值
//,	FIXED_TYPE_YT	//	二次B样条
};

SYS_REGIST_TYPE(lxut::mod::pretty_mesh);
SYS_REGIST_TYPE(lxut::mod::pretty_mesh::rsrc_fetch_type);

//#define						PRETTY_MESH_FILTER_ID	(0xccda4c45, 0x89734ce8, 0xaa73b11e, 0x7abe6091)
//static const lolix::LOLIX_ITF_ID	pretty_mesh_filter_id	PRETTY_MESH_FILTER_ID;


//--------------------------------------------------------------------------
//==============================================================================
#endif	//	!defined(__LXUT__MOD__SOLA_DANCER__NICK__K_IN_G__)
